import { IPSAppDEACMode } from '../../app/dataentity/ipsapp-deacmode';
import { IPSAppDEDataSet } from '../../app/dataentity/ipsapp-dedata-set';
import { IPSAppDataEntity } from '../../app/dataentity/ipsapp-data-entity';
import { IPSAjaxEditor } from '../ipsajax-editor';
import { IPSNavigateParamContainer } from '../ipsnavigate-param-container';
import { IPSUIActionGroup } from '../../view/ipsuiaction-group';

/**
 *
 * 继承父接口类型值[AC,AC_FS,AC_NOBUTTON,AC_FS_NOBUTTON]
 * @export
 * @interface IPSAutoComplete
 */
export interface IPSAutoComplete extends IPSAjaxEditor, IPSNavigateParamContainer {
  /**
   * 触发自填最小字符数[ACMINCHARS]
   * @type {number}
   * @default 0
   */
  aCMinChars: number;

  /**
   * 附加上下文Json字符串
   * @type {string}
   */
  contextJOString: string;

  /**
   * 项参数对象
   * @type {IModel}
   */
  itemParamJO: IModel;

  /**
   * 应用实体自填模式对象
   *
   * @type {IPSAppDEACMode}
   */
  getPSAppDEACMode(): IPSAppDEACMode | null;

  /**
   * 应用实体自填模式对象
   *
   * @type {IPSAppDEACMode}
   */
  get psAppDEACMode(): IPSAppDEACMode | null;

  /**
   * 应用实体自填模式对象（必须存在）
   *
   * @type {IPSAppDEACMode}
   */
  getPSAppDEACModeMust(): IPSAppDEACMode;

  /**
   * 应用实体结果集对象
   *
   * @type {IPSAppDEDataSet}
   */
  getPSAppDEDataSet(): IPSAppDEDataSet | null;

  /**
   * 应用实体结果集对象
   *
   * @type {IPSAppDEDataSet}
   */
  get psAppDEDataSet(): IPSAppDEDataSet | null;

  /**
   * 应用实体结果集对象（必须存在）
   *
   * @type {IPSAppDEDataSet}
   */
  getPSAppDEDataSetMust(): IPSAppDEDataSet;

  /**
   * 应用实体对象
   *
   * @type {IPSAppDataEntity}
   */
  getPSAppDataEntity(): IPSAppDataEntity | null;

  /**
   * 应用实体对象
   *
   * @type {IPSAppDataEntity}
   */
  get psAppDataEntity(): IPSAppDataEntity | null;

  /**
   * 应用实体对象（必须存在）
   *
   * @type {IPSAppDataEntity}
   */
  getPSAppDataEntityMust(): IPSAppDataEntity;

  /**
   * 相关界面行为组
   *
   * @type {IPSUIActionGroup}
   */
  getPSUIActionGroup(): IPSUIActionGroup | null;

  /**
   * 相关界面行为组
   *
   * @type {IPSUIActionGroup}
   */
  get psUIActionGroup(): IPSUIActionGroup | null;

  /**
   * 相关界面行为组（必须存在）
   *
   * @type {IPSUIActionGroup}
   */
  getPSUIActionGroupMust(): IPSUIActionGroup;

  /**
   * 附加参数Json字符串
   * @type {string}
   */
  paramJOString: string;

  /**
   * 支持自动填充
   * @type {boolean}
   */
  enableAC: boolean;

  /**
   * 必须为选择数据[FORCESELECTION]
   * @type {boolean}
   */
  forceSelection: boolean;

  /**
   * 显示下拉按钮[TRIGGER]
   * @type {boolean}
   */
  showTrigger: boolean;
}
